// pages/reservation/detail/detail.js

const util = require('../../../utils/util.js')
const networkUtil = require('../../../utils/networkutil.js')
const picUtil=require('../../../utils/fileprocess/picUtil.js')

const app = getApp()
let logStrPrefix="reservation.detail"

Page({

    /**
     * 页面的初始数据
     */
    data: {
        reservationPrimaryId: null,
        reservationPrimary: null,
        
        //预约单号》二维码字符串
        qrcodeBase64_reservno: null,
        //预约单号对话框状态
        showDialog_reservno: false,
        //访客照片对话框》照片本地地址
        photoUrl_current: null,
        showDialog_visitorPhoto: false,

        /**
         * 访客照片列表。照片base64格式的字符串过大，不适应直接渲染。
         * 此处做法为：在页面加载后，将图片字符串转为本地图片，并返回图片地址。
         * 格式为《idcardno, idcardnoUrl, photoBase64, photoUrl》
         */
        visitorPhotos: [],

    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
        
        /**
         * 1、获取options中的id
         */
        let that = this
        that.setData({
            reservationPrimaryId: options.id
        })

        /**
         * 2、根据reservationPrimaryId获取reservationPrimary。
         */
        that.getReservationPrimary().then((res)=>{
            /**
             * 2-2、获取"预约单号》二维码"字符串。并加载访客成员照片。
             */
            if(res==app.globalData.SUCCESS_STR){
                //获取"预约单号》二维码"字符串。
                that.getReservnoQrcode()
                //加载访客成员照片。
                that.loadVisitorPhotos()
            }
        })
    },

    /**
     * (1)根据reservationPrimaryId获取reservationPrimary。
     * (2)接着将reservationPrimary中的photoBase64置为null,并将照片信息存入visitorPhotos中。
     */
    getReservationPrimary: function() {
        let that = this
        let url = app.globalData.baseUrl + "/reservation/getReservationPrimaryById"
        let requestData = {
            id: that.data.reservationPrimaryId
        }

        return networkUtil.request_get(url, requestData).then((res) => {
            console.log("reservation.detail 获取预约信息，已完成..")

            /**
             * 将访客成员照片字段photoBase64置为null，并将照片信息存入visitorPhotos中
             */
            let reservationPrimary=res.data
            let reservationList=reservationPrimary.reservationList
            let visitorPhotos=that.data.visitorPhotos

            if (!util.isEmpty(reservationList) && reservationList.length>0){
                for(let i=0;i<reservationList.length;i++){
                    let idcardno=reservationList[i].idcardno
                    let idcardnoUrl = reservationList[i].idcardnoUrl
                    let photoBase64 = reservationList[i].photoBase64
                    
                    //将reservationList[i].photoBase64置为null
                    reservationList[i].photoBase64=null
                    
                    //将照片信息存入photoList中
                    if (!util.isEmpty(photoBase64)){
                        let visitorPhoto_single={}
                        visitorPhoto_single.idcardno = idcardno
                        visitorPhoto_single.idcardnoUrl=idcardnoUrl
                        visitorPhoto_single.photoBase64=photoBase64
                        visitorPhotos.push(visitorPhoto_single)
                    }
                }
            }

            that.setData({
                reservationPrimary: reservationPrimary
            })
            return app.globalData.SUCCESS_STR
        }).catch((res) => {
            console.error("reservation.detail 获取预约信息时发生错误!", res)
            return app.globalData.ERROR_STR
        })
    },

    /**
     * 根据reservno获取对应的二维码字符串。
     */
    getReservnoQrcode: function(){
        let that=this
        let url=app.globalData.baseUrl+"/reservation/getReservnoQrcode"
        let requestData={
            reservno: that.data.reservationPrimary.reservationno
        }

        networkUtil.request_get(url, requestData, false).then((res)=>{
            //若已获取到reservno对应的二维码字符串
            that.setData({
                qrcodeBase64_reservno: res.data.reservnoQrcodeStr
            })
        }).catch((res)=>{
            //若未获取到reservno对应的二维码字符串
            console.error(logStrPrefix+".getReservnoQrcode() 获取reservno对应的二维码字符串,出错!")
        })
    },
    
    /**
     * 打开"预约单号二维码对话框"。
     */
    openDialog_reservno: function() {
        let that = this

        that.setData({
            showDialog_reservno: true
        })
    },

    /**
     * 关闭"预约单号二维码对话框"。
     */
    cancelDialog_reservno: function() {
        this.setData({
            showDialog_reservno: false
        })
    },

    /**
     * 打开"访客照片对话框"。
     * 传入参数：photo_url。
     */
    openDialog_visitorPhoto: function(event) {
        let that = this
        let photoUrl_current = event.currentTarget.dataset.photo_url
        
        that.setData({
            photoUrl_current: photoUrl_current,
            showDialog_visitorPhoto: true
        })
    },

    /**
     * 关闭"访客照片对话框"。
     */
    cancelDialog_visitorPhoto: function(){
        this.setData({
            //photoUrl_current: null,
            showDialog_visitorPhoto: false
        })
    },
    
    /**
     * 通用捕获事件方法。
     */
    catchEvent: function(event){

    },

    /**
     * 加载访客图片。将visitorPhotos中的photoUrl存入reservationPrimary中。
     */
    loadVisitorPhotos: function(){
        let that=this
        let visitorPhotos=that.data.visitorPhotos

        //若visitorPhotos含有信息
        if(visitorPhotos.length>0){

            //将visitorPhotos中的photoBase64转为图片，并获取其地址
            for(let i=0;i<visitorPhotos.length;i++){
                let visitorPhoto_single=visitorPhotos[i]
                let idcardno = visitorPhoto_single.idcardno
                let idcardnoUrl = visitorPhoto_single.idcardnoUrl
                let photoBase64 = visitorPhoto_single.photoBase64
                
                //将base64字符串转为本地图片，并返回本地图片地址。
                let photoUrl = picUtil.convertBase64Str_toPic(photoBase64, idcardnoUrl)
                visitorPhoto_single.photoUrl = photoUrl
            }

            /**
             * 将visitorPhotos中的图片地址photoUrl存入reservationPrimary中
             */
            let key_photoUrl=null
            let reservationList=that.data.reservationPrimary.reservationList

            for(let i=0;i<visitorPhotos.length;i++){
                let idcardno = visitorPhotos[i].idcardno
                let photoUrl=visitorPhotos[i].photoUrl

                for (let k = 0; k < reservationList.length; k++){
                    //若reservationList[k].idcardno与idcardno一致
                    if (reservationList[k].idcardno == idcardno){
                        key_photoUrl="reservationPrimary.reservationList["+k+"].photoUrl"
                        that.setData({
                            [key_photoUrl]: photoUrl
                        })
                        break
                    }
                }
            }
        }
    },






    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function() {
        //console.log(logStrPrefix+" onReady()..")
    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function() {
        //console.log(logStrPrefix + " onShow()..")
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function() {
        //console.info(logStrPrefix+" onHide()..")
    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function() {
        //console.info(logStrPrefix + " onUnload()..")
    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function() {

    }
})